package j.framework.tags.form;

import j.util.DES;
import j.util.StringUtils;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;

/**
 * 导出excel Tag
 * 使用方法如下：
 * <form id="frmExcel" method="get">
 <form:hidden name="functionId"/>
 <easyui:textbox name="searchKey" prompt="序列标识" style="width:120px;"/>
 <easyui:linkButton name="立即查询" iconKey="search" onClick="reloadSequenceList();"/>
 <form:exportExcel formId="frmExcel" queryKey="sequeceList"/>
 </form>
 * User: jason
 * Date: 2015/4/9 15:42
 */
public class ExportExcelTag  extends SimpleTagSupport {
    private String buttonName;//按钮上的显示的名字，不指定则为“导出”
    private String formId;
    private String queryKey;

    @Override
    public void doTag() throws JspException, IOException {
        final StringBuilder s = new StringBuilder();
        //先在当前位置构造导出按钮，按钮格式暂时用easyui格式
        String buttonName = "导出";
        if(StringUtils.isNotEmpty(this.buttonName)){
            buttonName = this.buttonName;
        }
        s.append(String.format("<a href=\"javascript:void(0);\" class=\"easyui-linkbutton\" data-options=\"iconCls:'icon-excel'\" onclick=\"%s_toExcel();\">%s</a>",
                formId,buttonName));
        //构造导出按钮的事件
        s.append("<script>function ").append(formId).append("_toExcel(){");
        s.append("var _f = $('#").append(formId).append("');if(typeof _f.attr('action')==='undefined'){_f.attr('action','/user/req');}");
        //定义act隐藏域
        s.append("var _h_1 = $(\"<input type='hidden' name='act' value='excel'/>\");");
        s.append("_h_1.appendTo(_f);");
        //定义自定义查询key隐藏域
        s.append("var _h_2 = $(\"<input type='hidden' name='key' value='").append(DES.encrypt(queryKey)).append("'/>\");");
        s.append("_h_2.appendTo(_f);");
        //提交导出表单
        s.append("_f.submit();");
        //移除act隐藏域
        s.append("_h_1.remove();");
        //移除queryKey隐藏域
        s.append("_h_2.remove();");
        s.append("}");//导出函数结束
        s.append("</script>");
        getJspContext().getOut().write(s.toString());
    }

    public void setButtonName(String buttonName) {
        this.buttonName = buttonName;
    }

    public void setFormId(String formId) {
        this.formId = formId;
    }

    public void setQueryKey(String queryKey) {
        this.queryKey = queryKey;
    }
}
